/**
 * 为了实现在父类中实例化子类而设计，收集所有的会话类引用，解决JS无法循环导包的问题
 * */
const classes = new Set<Function>()
/**
 * 添加一个会话类的引用
 * @param clazz 类的引用对象。
 * */
export function addSessionClass(clazz) {
    classes.add(clazz)
}
/**
 * 获取一个类的引用
 * @param clsName 类的名称
 * */
export function getSessionClass<T>(clsName: string): T {
    // @ts-ignore
    for (const clazz of classes) {
        if (clazz.name === `${clsName}Session`) {
            return clazz as T;
        }
    }
}
/**
 * 清空所有的类引用
 * */
export function clearSessionClass() {
    classes.clear()
}